{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Benchmark \n",
    "---\n",
    "\n",
    "This notebook compares the decoder performance between Viterbi Decoder and Neural Decoder [1] on Convolution Codes over AWGN Channel.\n",
    "\n",
    "Reference:\n",
    "* [1] Kim, Hyeji, et al. \"Communication Algorithms via Deep Learning.\" ICLR (2018)\n",
    "\n",
    "\n",
    "### TODOs:\n",
    "---\n",
    "\n",
    "* [x] Benchmark Viterbi Decoder \n",
    "* [x] Benchmark Neural Decoder\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# https://stackoverflow.com/questions/34478398/import-local-function-from-a-module-housed-in-another-directory-with-relative-im\n",
    "# a hack to import module from different directory\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "module_path = os.path.abspath(os.path.join('..'))\n",
    "if module_path not in sys.path:\n",
    "    sys.path.append(module_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "import numpy as np\n",
    "import commpy as cp\n",
    "import tensorflow as tf\n",
    "import multiprocessing as mp\n",
    "\n",
    "from deepcom.metrics import BER, BLER         # metrics to benchmark Neural Decoder Model\n",
    "from deepcom.utils import corrupt_signal      # simulate a AWGN Channel\n",
    "from deepcom.dataset import data_genenerator  # data loader for Tensorflow\n",
    "from deepcom.model import NRSCDecoder # Neural Decoder Model\n",
    "\n",
    "BATCH_SIZE = 500       # depends on size of GPU, should be a factor of number_testing_sequences\n",
    "BLOCK_LEN = 100        # length of a message bits\n",
    "CONSTRAINT_LEN = 3     # num of shifts in Conv. Encoder\n",
    "TRACE_BACK_DEPTH = 15  # (?) a parameter Viterbi Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Load Dataset\n",
    "* Dataset should be generated using script `generate_synthetic_dataset.py`\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of testing sequences 10000\n"
     ]
    }
   ],
   "source": [
    "DATASET_PATH = '../rnn_120k_bl100_snr0.dataset'\n",
    "with open(DATASET_PATH, 'rb') as f:\n",
    "    _, _, X_test, Y_test = pickle.load(f)  # ignore training data\n",
    "print('Number of testing sequences {}'.format(len(X_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Load pre-trained Neural Decoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logs/BiGRU-2-400::dropout-0.3::epochs-50/BiGRU.hdf5\n",
      "Pre-trained model is loaded.\n"
     ]
    }
   ],
   "source": [
    "experiment_log = 'logs/BiGRU-2-400::dropout-0.3::epochs-50'\n",
    "try:\n",
    "    model_path = os.path.join(experiment_log, 'BiGRU.hdf5')\n",
    "    print(model_path)\n",
    "    model = tf.keras.models.load_model(model_path, custom_objects={'BER': BER, 'BLER': BLER})\n",
    "    model.compile(optimizer='adam', loss='binary_crossentropy')\n",
    "    print('Pre-trained model is loaded.')\n",
    "except Exception as e:\n",
    "    print(e)\n",
    "    raise ValueError('Pre-trained model is not found.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup Viterbi/Neural Decoder Benchmarks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def benchmark_neural_decoder(noisy_inputs, labels):\n",
    "    \n",
    "    # Set up data generator\n",
    "    Y = np.reshape(labels, (-1, BLOCK_LEN, 1))\n",
    "    X = np.reshape(np.array(noisy_inputs)[:, :2*BLOCK_LEN], (-1, BLOCK_LEN, 2))\n",
    "    test_set = data_genenerator(X, Y, BATCH_SIZE, shuffle=False)\n",
    "    \n",
    "    # Make predictions on batch\n",
    "    decoded_bits = model.predict(\n",
    "        test_set.make_one_shot_iterator(), \n",
    "        steps=len(Y) // BATCH_SIZE)\n",
    "    \n",
    "    # Compute hamming distances\n",
    "    original_bits = np.reshape(Y, (-1, BLOCK_LEN)).astype(int)\n",
    "    decoded_bits =  np.reshape(np.round(decoded_bits), (-1, BLOCK_LEN)).astype(int)\n",
    "    hamming_dist = np.not_equal(original_bits, decoded_bits)\n",
    "    \n",
    "    return np.sum(hamming_dist, axis=1)\n",
    "\n",
    "def benchmark_viterbi(message_bits, noisy_bits, sigma):\n",
    "  \n",
    "    # make fair comparison between (100, 204) convolutional code and RNN decoder\n",
    "    # Reference: Author's code\n",
    "    noisy_bits[-2*int(M):] = 0\n",
    "    \n",
    "    # Viterbi Decoder on Conv. Code\n",
    "    decoded_bits = cp.channelcoding.viterbi_decode(\n",
    "        coded_bits=noisy_bits.astype(float), \n",
    "        trellis=trellis,\n",
    "        tb_depth=TRACE_BACK_DEPTH,\n",
    "        decoding_type='unquantized')\n",
    "    \n",
    "    # Number of bit errors (hamming distance)\n",
    "    hamming_dist = cp.utilities.hamming_dist(\n",
    "        message_bits.astype(int),\n",
    "        decoded_bits[:-int(M)])\n",
    "    return hamming_dist\n",
    "\n",
    " \n",
    "from  commpy.channelcoding  import Trellis\n",
    "#  Generator Matrix (octal representation)\n",
    "G = np.array([[0o7, 0o5]]) \n",
    "M = np.array([CONSTRAINT_LEN - 1])\n",
    "trellis = Trellis(M, G, feedback=0o7, code_type='rsc')\n",
    "\n",
    "# #################################################################\n",
    "# For every SNR_db, we generates new noisy signals\n",
    "# for fair comparision.\n",
    "# #################################################################\n",
    "def generate_noisy_input(message_bits, trellis, sigma):\n",
    "    # Encode message bit\n",
    "    coded_bits = cp.channelcoding.conv_encode(message_bits, trellis)\n",
    "    # Corrupt message on BAWGN Channel\n",
    "    coded_bits = corrupt_signal(coded_bits, noise_type='awgn', sigma=sigma)\n",
    "    return coded_bits, message_bits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[SNR]=0.00\n",
      "\tNeural Decoder:  [BER]=0.0886410 [BLER]=0.986 -- 7.973s\n",
      "\tViterbi Decoder: [BER]=0.0886790 [BLER]=0.953 -- 45.262s\n",
      "[SNR]=1.00\n",
      "\tNeural Decoder:  [BER]=0.0493060 [BLER]=0.903 -- 5.630s\n",
      "\tViterbi Decoder: [BER]=0.0460290 [BLER]=0.771 -- 42.496s\n",
      "[SNR]=2.00\n",
      "\tNeural Decoder:  [BER]=0.0218420 [BLER]=0.665 -- 5.690s\n",
      "\tViterbi Decoder: [BER]=0.0189950 [BLER]=0.460 -- 44.036s\n",
      "[SNR]=3.00\n",
      "\tNeural Decoder:  [BER]=0.0075810 [BLER]=0.350 -- 6.190s\n",
      "\tViterbi Decoder: [BER]=0.0058220 [BLER]=0.194 -- 44.294s\n",
      "[SNR]=4.00\n",
      "\tNeural Decoder:  [BER]=0.0020670 [BLER]=0.116 -- 6.002s\n",
      "\tViterbi Decoder: [BER]=0.0012190 [BLER]=0.049 -- 42.413s\n",
      "[SNR]=5.00\n",
      "\tNeural Decoder:  [BER]=0.0004810 [BLER]=0.034 -- 5.893s\n",
      "\tViterbi Decoder: [BER]=0.0003040 [BLER]=0.015 -- 43.532s\n",
      "[SNR]=6.00\n",
      "\tNeural Decoder:  [BER]=0.0000850 [BLER]=0.008 -- 5.925s\n",
      "\tViterbi Decoder: [BER]=0.0000720 [BLER]=0.005 -- 42.613s\n",
      "[SNR]=7.00\n",
      "\tNeural Decoder:  [BER]=0.0000200 [BLER]=0.002 -- 6.283s\n",
      "\tViterbi Decoder: [BER]=0.0000210 [BLER]=0.002 -- 45.927s\n"
     ]
    }
   ],
   "source": [
    "viterbiBERs, viterbiBLERs = [], []\n",
    "neuralBERs, neuralBLERs = [], []\n",
    "\n",
    "pool = mp.Pool(processes=mp.cpu_count())\n",
    "labels = np.reshape(Y_test, (-1, BLOCK_LEN)).astype(int)\n",
    "try: \n",
    "    SNRs  = np.linspace(0, 7.0, 8)\n",
    "    for snr in SNRs:\n",
    "        snr_linear = snr + 10 * np.log10(1./2.)\n",
    "        sigma = np.sqrt(1. / (2. * 10 **(snr_linear / 10.)))\n",
    "        print('[SNR]={:.2f}'.format(snr))\n",
    "        \n",
    "        # Generates new noisy signals\n",
    "        result = pool.starmap(\n",
    "            func=generate_noisy_input,  \n",
    "            iterable=[(msg_bits, trellis, sigma) for msg_bits in labels])\n",
    "        \n",
    "        X, Y =  zip(*result)\n",
    "        \n",
    "        # #################################################################\n",
    "        # BENCHMARK NEURAL DECODER \n",
    "        # #################################################################\n",
    "        nn_start = time.time()\n",
    "        hamm_dists = benchmark_neural_decoder(X, Y)\n",
    "        \n",
    "        nn_ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        nn_bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "        \n",
    "        neuralBERs.append(nn_ber)\n",
    "        neuralBLERs.append(nn_bler)            \n",
    "        print('\\tNeural Decoder:  [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "            nn_ber, nn_bler, time.time() - nn_start)) \n",
    "\n",
    "        # #################################################################\n",
    "        # BENCHMARK VITERBI DECODER \n",
    "        # #################################################################\n",
    "        vi_start = time.time()\n",
    "        hamm_dists = pool.starmap(benchmark_viterbi, [(y, x, sigma) for x, y in zip(X, Y)])\n",
    "        \n",
    "        ber = sum(hamm_dists) / np.product(np.shape(Y))\n",
    "        bler = np.count_nonzero(hamm_dists) / len(Y)\n",
    "        \n",
    "        viterbiBERs.append(ber)\n",
    "        viterbiBLERs.append(bler)\n",
    "        print('\\tViterbi Decoder: [BER]={:5.7f} [BLER]={:5.3f} -- {:3.3f}s'.format(\n",
    "              ber, bler, time.time() - vi_start))\n",
    "        \n",
    "except Exception as e:\n",
    "    print(e)\n",
    "finally:\n",
    "    pool.close()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "# ###################################\n",
    "# Plot Bit Error Rate (BER) Curve\n",
    "# ###################################\n",
    "plt.figure(figsize=(18, 7))\n",
    "\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBERs, 's--')\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.ylabel('BER', fontsize=16)\n",
    "plt.grid(True, which='both')\n",
    "plt.savefig('result_ber_block_length_1000_snr0.png')\n",
    "\n",
    "# ###################################\n",
    "# Plot Block Error Rate (BLER) Curve\n",
    "# ###################################\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.title('Block Length = 100 || Data rate = 1/2', fontsize=14)\n",
    "\n",
    "plt.semilogy(SNRs, neuralBLERs, '-vr')\n",
    "plt.semilogy(SNRs, viterbiBLERs, 's--')\n",
    "plt.ylabel('BLER', fontsize=16)\n",
    "plt.xlabel('SNR', fontsize=16)\n",
    "plt.legend(['N-RSC (SNR_train=0 dB)', 'Viterbi'], fontsize=16)\n",
    "\n",
    "plt.xlim(xmin=SNRs[0], xmax=SNRs[-1])  # this line\n",
    "plt.grid(True, which='both')\n",
    "plt.savefig('result_bler_block_length_1000_snr0.png')"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
